home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / pvm34b3.zip / pvm34b3 / pvm3 / src / global.h < prev    next >
C/C++ Source or Header  |  1997-08-08  |  9KB  |  284 lines

  1.  
  2. /* $Id: global.h,v 1.7 1997/06/25 22:08:44 pvmsrc Exp $ */
  3.  
  4. /*
  5.  *         PVM version 3.4:  Parallel Virtual Machine System
  6.  *               University of Tennessee, Knoxville TN.
  7.  *           Oak Ridge National Laboratory, Oak Ridge TN.
  8.  *                   Emory University, Atlanta GA.
  9.  *      Authors:  J. J. Dongarra, G. E. Fagg, M. Fischer
  10.  *          G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
  11.  *         P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
  12.  *                   (C) 1997 All Rights Reserved
  13.  *
  14.  *                              NOTICE
  15.  *
  16.  * Permission to use, copy, modify, and distribute this software and
  17.  * its documentation for any purpose and without fee is hereby granted
  18.  * provided that the above copyright notice appear in all copies and
  19.  * that both the copyright notice and this permission notice appear in
  20.  * supporting documentation.
  21.  *
  22.  * Neither the Institutions (Emory University, Oak Ridge National
  23.  * Laboratory, and University of Tennessee) nor the Authors make any
  24.  * representations about the suitability of this software for any
  25.  * purpose.  This software is provided ``as is'' without express or
  26.  * implied warranty.
  27.  *
  28.  * PVM version 3 was funded in part by the U.S. Department of Energy,
  29.  * the National Science Foundation and the State of Tennessee.
  30.  */
  31.  
  32. /*
  33.  *    global.h
  34.  *
  35.  *    Generic includes.
  36.  *
  37. $Log: global.h,v $
  38.  * Revision 1.7  1997/06/25  22:08:44  pvmsrc
  39.  * Markus adds his frigging name to the author list of
  40.  *     every file he ever looked at...
  41.  *
  42.  * Revision 1.6  1997/04/09  14:37:53  pvmsrc
  43.  * PVM patches from the base 3.3.10 to 3.3.11 versions where applicable.
  44.  * Originals by Bob Manchek. Altered by Graham Fagg where required.
  45.  *
  46.  * Revision 1.5  1997/04/08  19:57:50  pvmsrc
  47.  * Promoted mbox static "classes" to public global "pvmmboxclasses".
  48.  *     - so pvmd can spank mboxes in ddpro.c...  :-Q
  49.  *     - renamed everywhere, moved decl / extern to global.[ch].
  50.  *
  51.  * Revision 1.4  1997/03/06  20:56:26  pvmsrc
  52.  *     add include host.h
  53.  *
  54.  * Revision 1.3  1997/01/28  19:27:55  pvmsrc
  55.  * New Copyright Notice & Authors.
  56.  *
  57.  * Revision 1.2  1996/10/24  20:37:02  pvmsrc
  58.  * Modified for New Tracing Facility:
  59.  *     - added new PDMTRACE constant for tracer debug tracing...
  60.  *     - moved in miscellaneous external declarations:
  61.  *         * PVM Error Globals:  char *pvm_errlist[], int pvm_nerr,
  62.  *             int pvm_errno.
  63.  *         * wait list:  struct waitc *waitlist.
  64.  *         * trace globals:  struct Pvmtevdid pvmtevdidlist[],
  65.  *             struct Pvmtevinfo pvmtevinfo[].
  66.  *
  67.  * Revision 1.1  1996/09/23  23:43:15  pvmsrc
  68.  * Initial revision
  69.  *
  70.  * Revision 1.21  1996/05/13  20:24:52  manchek/GEF
  71.  * changed DEFBINDIR to $HOME...
  72.  * release patch 11
  73.  *
  74.  * Revision 1.20  1995/11/02  16:00:37  manchek
  75.  * version change
  76.  *
  77.  * Revision 1.19  1995/09/05  19:28:49  manchek
  78.  * version change
  79.  *
  80.  * Revision 1.18  1995/07/24  18:24:19  manchek
  81.  * added TIDISHERE macro
  82.  *
  83.  * Revision 1.17  1995/05/17  16:07:30  manchek
  84.  * version 3.3.8
  85.  *
  86.  * Revision 1.16  1995/02/03  16:46:47  manchek
  87.  * version 3.3.7
  88.  *
  89.  * Revision 1.15  1994/12/21  21:27:34  manchek
  90.  * version 3.3.6
  91.  *
  92.  * Revision 1.14  1994/10/15  19:05:01  manchek
  93.  * version 3.3.5
  94.  *
  95.  * Revision 1.13  1994/09/02  15:20:38  manchek
  96.  * version 3.3.4
  97.  *
  98.  * Revision 1.12  1994/07/18  19:20:00  manchek
  99.  * version to 3.3.3
  100.  *
  101.  * Revision 1.11  1994/07/01  15:08:02  manchek
  102.  * version to 3.3.2
  103.  *
  104.  * Revision 1.10  1994/06/21  18:30:26  manchek
  105.  * to version 3.3.1
  106.  *
  107.  * Revision 1.9  1994/06/03  20:38:55  manchek
  108.  * oops
  109.  *
  110.  * Revision 1.8  1994/06/03  20:38:14  manchek
  111.  * version 3.3.0
  112.  *
  113.  * Revision 1.7  1993/12/20  15:42:26  manchek
  114.  * version change
  115.  *
  116.  * Revision 1.6  1993/11/30  15:49:14  manchek
  117.  * version change
  118.  *
  119.  * Revision 1.5  1993/10/27  17:32:16  manchek
  120.  * version change
  121.  *
  122.  * Revision 1.4  1993/10/12  14:44:31  manchek
  123.  * version change
  124.  *
  125.  * Revision 1.3  1993/09/23  20:53:50  manchek
  126.  * version change
  127.  *
  128.  * Revision 1.2  1993/09/22  18:59:46  manchek
  129.  * version change
  130.  *
  131.  * Revision 1.1  1993/08/30  23:26:47  manchek
  132.  * Initial revision
  133.  *
  134.  */
  135.  
  136.  
  137. /* UDPMAXLEN should be set to the largest UDP message length
  138.    your system can handle. */
  139.  
  140. #ifndef    UDPMAXLEN
  141.  
  142. #if    defined(IMA_CRAY) || defined(IMA_CRAY2)
  143. #include <sys/tcp_config.h>
  144. #define    UDPMAXLEN    UDPSENDSPACE/4 /* UDPSENDSPACE/2 whacks on some C-90s */
  145. #endif
  146.  
  147. #endif    /*!UDPMAXLEN*/
  148.  
  149. /*    16 is the number of bytes taken by align_me, which is used to keep
  150.     reference information to a da_buf.
  151.     By subtracting this number from UDPMAXLEN, we can assure ourselves 
  152.     that da_bufs do not spill over a few bytes onto the next page of
  153.     memory. Should keep us from *always* page faulting on a send 
  154. */
  155.  
  156. #define KEEPONPAGE 16
  157.  
  158. #ifndef    UDPMAXLEN
  159. #define    UDPMAXLEN    (4096 - KEEPONPAGE)    /* generic max fragment length */
  160. #endif
  161.  
  162.  
  163. /*DocThis*/
  164. /*
  165.  * TID definitions
  166.  *
  167.  *    3                   2                   1
  168.  *  1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  169.  * +---------------+---------------+---------------+---------------+
  170.  * |               |               |               |               |
  171.  * +---------------+---------------+---------------+---------------+
  172.  *  S G \__________ H ________/ \_______________ L _______________/
  173.  */
  174. /*EndDocThis*/
  175.  
  176. #define    TIDHOST        0x3ffc0000
  177. #define    TIDLOCAL    0x0003ffff
  178. #define    TIDGID        0x40000000
  179. #define    TIDPVMD        0x80000000
  180.  
  181. #define    TIDISTASK(x)    (!((x)&(TIDGID|TIDPVMD)) && ((x)&TIDLOCAL))
  182. #define    TIDISPVMD(x)    (((x)&(TIDGID|TIDPVMD)) == TIDPVMD && !((x)&TIDLOCAL))
  183. #define    TIDISMCA(x)        (((x)&(TIDGID|TIDPVMD)) == TIDGID)
  184. #define    TIDISHERE(x,me)    (!((x) & TIDHOST) || !(((x) ^ (me)) & TIDHOST))
  185.  
  186.  
  187. /*
  188. * Message header
  189. */
  190.  
  191. #define    MSGHDRLEN    32
  192.  
  193. /*DocThis*/
  194. /*
  195.  *    0               1               2               3
  196.  *   +---------------+---------------+---------------+---------------+
  197.  *  0|                        data signature                         |
  198.  *   +---------------------------------------------------------------+
  199.  *  4|                              tag                              |
  200.  *   +---------------------------------------------------------------+
  201.  *  8|                            context                            |
  202.  *   +---------------------------------------------------------------+
  203.  * 12|                        sequence number                        |
  204.  *   +---------------------------------------------------------------+
  205.  * 16|                            wait id                            |
  206.  *   +---------------------------------------------------------------+
  207.  * 20|                           checksum                            |
  208.  *   +---------------------------------------------------------------+
  209.  * 24|                           reserved                            |
  210.  *   +---------------------------------------------------------------+
  211.  * 28|                           reserved                            |
  212.  *   +---------------------------------------------------------------+
  213.  */
  214. /*EndDocThis*/
  215.  
  216.  
  217. /* frag and packet flags */
  218.  
  219. #define    FFSOM        1        /* first frag of msg */
  220. #define    FFEOM        2        /* final frag of msg */
  221. #define FFMCA        8        /* This is a multicast message */
  222. #define FFMCAWH        16        /* Output should write the header of a mcast msg */
  223.  
  224. #ifdef IMA_OS2
  225. #define    DEFBINDIR    "$HOME/pvm3/bin/$PVM_ARCH;$PVM_ROOT/bin/$PVM_ARCH"
  226. #endif
  227. #ifndef    DEFBINDIR
  228. #define    DEFBINDIR    "$HOME/pvm3/bin/$PVM_ARCH:$PVM_ROOT/bin/$PVM_ARCH"
  229. #endif
  230.  
  231. #ifndef    DEFDEBUGGER
  232. #define    DEFDEBUGGER    "$PVM_ROOT/lib/debugger"
  233. #endif
  234.  
  235. #ifndef    PVMDFILE
  236. #define    PVMDFILE    "lib/pvmd"
  237. #endif
  238.  
  239. #ifndef    PVMDPATH
  240. #define    PVMDPATH    "$PVM_ROOT/lib/pvmd"
  241. #endif
  242.  
  243.  
  244. /* debug mask for pvmd and libpvm */
  245.  
  246. #define    PDMPACKET    0x00001        /* packet tracing */
  247. #define    PDMMESSAGE    0x00002        /* message tracing */
  248. #define    PDMTASK        0x00004        /* task state */
  249. #define    PDMSTARTUP    0x00008        /* slave pvmd startup */
  250. #define    PDMHOST        0x00010        /* host table updates */
  251. #define    PDMSELECT    0x00020        /* select loop/fd set stuff */
  252. #define    PDMNET        0x00040        /* IP network stuff */
  253. #define    PDMNODE        0x00080        /* multiprocessor control */
  254. #define    PDMSCHED    0x00100        /* resource manager tasks stuff */
  255. #define    PDMAPPL        0x00200        /* application (scrapped msgs/stuff) */
  256. #define    PDMWAITC    0x00400        /* wait contexts */
  257. #define    PDMMEM        0x00800        /* shared memory */
  258. #define    PDMSEM        0x01000        /* semaphores */
  259. #define    PDMLOCK        0x02000        /* locks */
  260. #define    PDMROUTE    0x04000        /* message routing */
  261. #define    PDMMBOX        0x08000        /* message mailbox */
  262. #define    PDMTRACE    0x10000        /* tracer tracing */
  263. #define PDMMCA        0x20000        /* multicast tracking */
  264.  
  265.  
  266. /* General PVM Globals Declarations */
  267.  
  268. extern    char *pvm_errlist[];        /* error messages for -pvm_errno */
  269.  
  270. extern    int pvm_nerr;                /* exported num of errors */
  271. extern    int pvm_errno;                /* last err in PVM API funct */
  272.  
  273. extern    struct waitc *waitlist;        /* wait list */
  274.  
  275. extern    struct pvmmclass *pvmmboxclasses;        /* the mbox database */
  276.  
  277.  
  278. /* General Trace Globals Declarations */
  279.  
  280. extern    struct Pvmtevdid pvmtevdidlist[];
  281.  
  282. extern    struct Pvmtevinfo pvmtevinfo[];
  283.  
  284.